properties:
  apiserver:
    description: |
      Параметры `kube-apiserver`.
    properties:
      serviceAccount:
        description: |
          Настройки выпуска ServiceAccount'ов.
        properties:
          issuer:
            description: |
              Издатель ServiceAccount'ов. Это URL API-сервера. Значения этого поля используются как `iss` claim токена и для проверки JWT-токенов ServiceAccount.

              **Обратите внимание**, что все поды в кластере, использующие токены ServiceAccount, должны быть перезапущены при изменении этой опции.
          additionalAPIAudiences:
            description: |
              Список API audience'ов, которые следует добавить при создании токенов ServiceAccount.
      admissionPlugins:
        description: |
          Список включенных дополнительных [admission plugin'ов](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers).

          **Обратите внимание**, что, помимо включенных по умолчанию в Kubernetes admission plugin'ов, также всегда включены (без возможности отключения) следующие admission plugin'ы:
          - `ExtendedResourceToleration`;
          - `PodNodeSelector`;
          - `PodTolerationRestriction`;
          - `EventRateLimit`, который использует следующую конфигурацию:

            ```yaml
            apiVersion: eventratelimit.admission.k8s.io/v1alpha1
            kind: Configuration
            limits:
            - type: Namespace
              qps: 50
              burst: 100
              cacheSize: 2000
            ```

          > Admission plugin `PodNodeSelector` [не требует](https://github.com/kubernetes/kubernetes/blob/f0ea54070bec90dd829b7054117d670f9f90839f/plugin/pkg/admission/podnodeselector/admission.go#L74-L97) указания глобальной конфигурации, он использует только аннотации на пространстве имен (namespace'ах).
      bindToWildcard:
        description: |
          Прослушивание на `0.0.0.0`.

          По умолчанию API-сервер слушает на hostIP, который обычно соответствует Internal-адресу узла, но это зависит от типа кластера (Static или Cloud) и выбранной схемы размещения (layout).
      certSANs:
        description: |
          Массив строк, список дополнительных [SANs](https://en.wikipedia.org/wiki/Subject_Alternative_Name), с которыми будет сгенерирован сертификат API-сервера.

          Кроме переданного списка, всегда используется и следующий список:
          * `kubernetes`;
          * `kubernetes.default`;
          * `kubernetes.default.svc`;
          * `kubernetes.default.svc.cluster.local`;
          * `192.168.0.1`;
          * `127.0.0.1`;
          * *текущий_hostname*;
          * *hostIP*.
      authn:
        description: |
          Опциональные параметры аутентификации клиентов Kubernetes API.

          По умолчанию используются данные из ConfigMap, устанавливаемого модулем [user-authn](https://deckhouse.ru/documentation/v1/modules/150-user-authn/).
        properties:
          oidcIssuerURL:
            description: |
              URL OIDC-провайдера.
          oidcCA:
            description: |
              CA OIDC-провайдера.
          oidcIssuerAddress:
            description: |
              Сетевой адрес OIDC-провайдера.
          webhookURL:
            description: |
              URL аутентификационного webhook'а.
          webhookCA:
            description: |
              CA аутентификационного webhook'a.
          webhookCacheTTL:
            description: |
              Продолжительность кэширования ответов от аутентификационного webhook'a.

              Задается в виде строки с указанием часов и минут: 30m, 1h, 2h30m, 24h.
      authz:
        description: |
          Параметры авторизации клиентов Kubernetes API.

          По умолчанию используются данные из ConfigMap, устанавливаемого модулем [user-authz](https://deckhouse.ru/documentation/v1/modules/140-user-authz/).
        properties:
          webhookURL:
            description: |
              URL webhook'а авторизации.
          webhookCA:
            description: |
              CA webhook'а авторизации.
      loadBalancer:
        description: |
          Создание сервиса `kube-system/d8-control-plane-apiserver` с типом `LoadBalancer`.
        properties:
          annotations:
            description: |
              Аннотации, которые будут проставлены сервису для гибкой настройки балансировщика.
              > **Внимание!** Модуль не учитывает особенности указания аннотаций в различных облаках. Если аннотации для заказа LoadBalancer'а применяются только при создании сервиса, для обновления подобных параметров вам необходимо будет удалить и добавить параметр `apiserver.loadBalancer`.
          sourceRanges:
            description: |
              Список CIDR, которым разрешен доступ к API.

              Облачный провайдер может не поддерживать данную опцию и игнорировать ее.
          port:
            description: |
              Внешний порт TCP-балансировщика.
      auditPolicyEnabled:
        description: |
          Применяет [дополнительные политики аудита](faq.html#как-настроить-дополнительные-политики-аудита) с конфигурацией из Secret'а `kube-system/audit-policy`.
      basicAuditPolicyEnabled:
        description: |
          Применяет базовые политики аудита Deckhouse.
      auditLog:
        description: |
          Параметры аудита.
        properties:
          output:
            description: |
              Тип потока для вывода журнала аудита.
          path:
            description: |
              Путь к директории. Действует только в случае `output: "File"`.
      encryptionEnabled:
        description: |
          Включает режим [encrypting secret data at rest](https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/).

          Генерирует Secret `kube-system/d8-secret-encryption-key`, содержащий ключ шифрования.
          > **Важно!** Этот режим нельзя отключить!
  etcd:
    description: |
      Параметры `etcd`.
    properties:
      maxDbSize:
        description: |
          [quota-backend-bytes](https://etcd.io/docs/v3.5/dev-guide/limit/#storage-size-limit) параметр.
          Deckhouse автоматически управляет `quota-backend-bytes` параметром.
          Если параметр `maxDbSize` установлен, Deckhouse будет использовать это значение для параметра `quota-backend-bytes` etcd.

          Минимальное значение: 512MB.

          Максимальное значение: 8GB.

          **Экспериментальный**. Может быть удален в будущем.
      externalMembersNames:
        description: |
          Массив имен внешних etcd member'ов (эти member'ы не будут удаляться).
  nodeMonitorGracePeriodSeconds:
    description: |
      Число секунд, через которое узел перейдет в состояние `Unreachable` при потере с ним связи.
  failedNodePodEvictionTimeoutSeconds:
    description: |
      Количество секунд, по прошествии которых с узла в статусе `Unreachable` будут удалены поды.
      > **Важно!** При изменении этого параметра потребуется перезапуск подов.
